[Looker小ネタ] 複数メジャーをOR条件でフィルタリングする #looker
Lookerで分析をしていて、複数のメジャーをOR条件でフィルターをかけて計算したいことがあると思います。
ですが、Exploreのデフォルトのフィルター機能の場合、項目を追加したら裏側のSQLではand条件で生成されます。
総売上メジャー100ドル以上、もしくは平均商品別粗利率メジャー10%以上のどちらかを満たしている結果を表示させたいのですが、上の図のデフォルトのやり方では総売上メジャー100ドル以上、かつ平均商品別粗利率メジャー10%以上のどちらも満たす結果が表示されてしまいます。
そこで、使用するのがyesnoタイプのメジャーです。
(元ネタ:How do I make OR filters when using Filters on Measures? (Community))
LookMLでやることは、OR条件で表示したいメジャーとその表示条件をsqlパラメータで記述するだけです!
measure: can_be_plotted { type: yesno sql: ${total_sale_price} > 100 OR ${total_gross_margin_percentage} > 0.1;; }
次にExplore画面でタイプyesnoメジャーをフィルターで指定すればOR条件でhaving句が生成されます!
じゃじゃーん!
まとめ
正直メジャーのyesnoタイプってなんのために存在しているのかずーーっと謎だったのですが、これでLooker七不思議のうちの一つを解決することができました。
このやり方だとフィルター対象のメジャーや値が固定になってしまうので、次はExplore側で指定したメジャーや値を指定することができないかを試してみます!